IF exists(SELECT * FROM dbo.sysobjects WHERE name='stamboek' AND xtype='P') 
BEGIN
	DROP PROCEDURE stamboek
END
GO

CREATE    procedure stamboek(@schooljaar varchar(4),@school char(6))
as
set nocount on

-------------------------------------------------------------------
-- De wijzigingen tijdens het schooljaar worden als n tekstlijn 
-- opgenomen in de tussentabel #wijzigingenSchooljaar.
-------------------------------------------------------------------

create table #wijzigingenSchooljaar(
inschrijvingsNr char(7),
tekst varchar(300))

declare @deNr char(7)
declare @inr char(7)
declare @klas varchar(5)
declare @deKlas varchar(5)
declare @jaar varchar(4)
declare @hetJaar varchar(4)
declare @datum datetime
declare @tekst varchar(300)
declare @veranderd bit

declare deCursor cursor local for
select inschrijvingsNr,datum,klas,schooljaar from 
  historiek as h 
where left(stamboekNr,2) = right(@schooljaar,2) 
   and schoolNummer = @school
order by stamboekNr,datum

set @tekst = ''
open deCursor
fetch next from deCursor into @inr,@datum,@klas,@jaar
if (@@fetch_status = 0) 
  begin
    set @deNr = @iNr
    set @hetJaar = @jaar
    set @deKlas = @klas
    set @veranderd = 0
    fetch next from deCursor into @inr,@datum,@klas,@jaar
    while (@@fetch_status = 0)
      begin        
        if (@iNr = @deNr) and (@jaar = @hetJaar)
    	  begin
	    set @tekst = @tekst + convert(varchar,@datum,103) + ':' + @deKlas + '->' + @klas  + '  '
	    set @veranderd = 1
          end
        else
	  begin
	    if (@veranderd = 1) insert #wijzigingenSchooljaar(inschrijvingsNr,tekst) values(@deNr,@tekst)
            set @tekst = '' 
	    set @deNr = @iNr
	    set @hetJaar = @jaar
	    set @deKlas = @klas
	    set @veranderd = 0
	  end
        fetch next from deCursor into @inr,@datum,@klas,@jaar
      end
  end
-------------------------------------------------------------------
-- De administratieve gegevens worden 
-- opgenomen in de tussentabel #stamboekHulptabel.
-------------------------------------------------------------------

select distinct achternaam,voornaam,naam1,lln.inschrijvingsNr,
	  percentLagereSchool, lagereSchool, lagereSchoolNr,
	  nationaliteit, geboorteplaats,
	  geboortedatum, rijksregisterNr, geslacht,
	  stamboekNr,gestart,verlaten
into #stamboekHulptabel
from historiek as h
	left join alleGestarteLln  as lln
	on h.inschrijvingsNr = lln.inschrijvingsNr
	left join gestartVerlaten as g
	on lln.inschrijvingsNr = g.inschrijvingsNr
		and h.schoolNummer = g.schoolNummer
where left(h.stamboekNr,2) = right(@schooljaar,2) 
	and h.schoolNummer = @school

-------------------------------------------------------------------
-- De historiek wordt jaar per jaar aangehangen
-- in de hulptabel #deJaren
-------------------------------------------------------------------
declare @klasNaam varchar(15)

create table #deJaren(
inschrijvingsNr char(7),
jaar1 varchar(15),
jaar2 varchar(15),
jaar3 varchar(15),
jaar4 varchar(15),
jaar5 varchar(15),
jaar6 varchar(15),
jaar7 varchar(15),
jaar8 varchar(15))

-- De opbouw van de verschillende jaren

declare @jaarInt int 
set @jaarInt = convert(int,@schooljaar)
declare @jaar2 varchar(4)
set @jaar2 = convert(varchar(4),@jaarInt + 1)
declare @jaar3 varchar(4)
set @jaar3 = convert(varchar(4),@jaarInt + 2)
declare @jaar4 varchar(4)
set @jaar4 = convert(varchar(4),@jaarInt + 3)
declare @jaar5 varchar(4)
set @jaar5 = convert(varchar(4),@jaarInt + 4)
declare @jaar6 varchar(4)
set @jaar6 = convert(varchar(4),@jaarInt + 5)
declare @jaar7 varchar(4)
set @jaar7 = convert(varchar(4),@jaarInt + 5)
declare @jaar8 varchar(4)
set @jaar8 = convert(varchar(4),@jaarInt + 5)

-- De tabel wordt gevuld met inschrijvingsNr's
insert into #deJaren(inschrijvingsNr)
select distinct inschrijvingsNr
from historiek 
where left(stamboekNr,2) = right(@schooljaar,2) 
   and schoolNummer = @school

-- De gegevens van de historiek worden toegevoegd.

close deCursor
deallocate deCursor

declare deCursor cursor local for
select inschrijvingsNr,v.stamboeknaam as klas,schooljaar from 
  historiek as h 
  left join stamboekVertaalTabelKlas as v
	on v.klas = h.klas
		and schooljaar >= startjaar
			and schooljaar <= eindjaar
where left(stamboekNr,2) = right(@schooljaar,2) 
   and schoolNummer = @school
order by stamboekNr,datum desc

open deCursor
fetch next from deCursor into @inr,@klasNaam,@jaar
while (@@fetch_status = 0) 
 begin
   if @jaar = @schooljaar
   update #deJaren set jaar1 = @klasNaam where inschrijvingsNr = @iNr 
   else if @jaar = @jaar2
     update #deJaren set jaar2 = @klasNaam where inschrijvingsNr = @iNr
     else if @jaar = @jaar3
       update #deJaren set jaar3 = @klasNaam where inschrijvingsNr = @iNr
       else if @jaar = @jaar4
         update #deJaren set jaar4 = @klasNaam where inschrijvingsNr = @iNr
         else if @jaar = @jaar5
           update #deJaren set jaar5 = @klasNaam where inschrijvingsNr = @iNr
           else if @jaar = @jaar6
             update #deJaren set jaar6 = @klasNaam where inschrijvingsNr = @iNr
             else if @jaar = @jaar7
               update #deJaren set jaar7 = @klasNaam where inschrijvingsNr = @iNr
               else if @jaar = @jaar8
                 update #deJaren set jaar8 = @klasNaam where inschrijvingsNr = @iNr
  fetch next from deCursor into @inr,@klasNaam,@jaar
 end

-- De uiteindelijke recordset
select lln.stamboekNr,lln.voornaam,lln.achternaam,lln.geslacht,
lln.percentLagereSchool,lln.lagereSchool,lln.nationaliteit,
lln.geboorteplaats,lln.geboortedatum,
lln.gestart,lln.verlaten, lln.rijksregisterNr,
jaar1,jaar2,jaar3,jaar4,jaar5,jaar6,jaar7,jaar8,
g.tekst
  from #stamboekHulptabel as lln
  left join #wijzigingenSchooljaar as g
	on lln.inschrijvingsNr = g.inschrijvingsNr
  left join #deJaren as j
    	on j.inschrijvingsNr = lln.inschrijvingsNr